#include "PartidaLocal.h"
#include "../vista/Vista.h"
#include "../modelo/VistasFactory.h"
#include <sigc++/signal.h>
PartidaLocal::PartidaLocal(Canvas* canvas, bool detectarImpactos)
{
	this->canvas = canvas;
	juego = new Juego(1);
	this->hookEvent(juego->getEscenario());
	if (!detectarImpactos) juego->noDetectarImpactos();
}

PartidaLocal::~PartidaLocal()
{
	delete(juego);
}

void PartidaLocal::iniciar() {
	juego->iniciar();
}

void PartidaLocal::lanzarHuevo(int velX, int velY) {
	juego->lanzarHuevo(juego->getIdJugadores().top(), velX, velY);
}

Juego* PartidaLocal::getJuego() {
	return juego;
}

void PartidaLocal::handlerNuevo(Objeto *obj) {
	Vista *vista = VistasFactory::get()->crearVista(obj);
	canvas->agregarVista(vista);
}

void PartidaLocal::handlerDestruido(short id) {
	//std::cout<<"quitarVista"<<id<<std::endl;
	canvas->quitarVista(id);
}

void PartidaLocal::hookEvent(Escenario* pSource) {
	pSource->eventoObjNuevo.connect(sigc::mem_fun(*this, &PartidaLocal::handlerNuevo));
	pSource->eventoObjDestruido.connect(sigc::mem_fun(*this, &PartidaLocal::handlerDestruido));
}

void PartidaLocal::unhookEvent(Escenario* pSource) {
}

